/*
 * Asteroide.h
 *
 *  Created on: Apr 5, 2012
 *      Author: gonzalo-Ramiro
 */

#ifndef ASTEROIDE_H_
#define ASTEROIDE_H_

#include "WidgetMovimiento.h"
#include "Widget.h"
#include "../common/DTOAsteroide.h"
#include "../persistencia/TipoAsteroide.h"

const int CERO_GRADOS = 0;
const int NOVENTA_GRADOS = 90;
const int CIENTO_OCHENTA_GRADOS = 180;
const int DOSCIENTOS_SETENTA_GRADOS = 270;
const int TRESIENTOS_SESENTA_GRADOS = 360;

enum CuadranteDeLaDireccion {PER_CUAD,SDO_CUAD,TER_CUAD,QTO_CUAD};

class Asteroide: public WidgetMovimiento {
public:
	Asteroide(TipoAsteroide* tipo,int x,int y,int direccion,
			int velocidad, Widget* parent,std::string imagePath);
	Asteroide(DTOAsteroide* dto);

	virtual void handleEvent(Event event);
	virtual void resolve();

	DTOAsteroide* getDTO();

	void setParent(Widget* widget);

	virtual ~Asteroide();

private:
	void cambiarPosicion();

protected:

	TipoAsteroide* tipo;
	int direccion;
	int velocidad;

};

#endif /* ASTEROIDE_H_ */
